// const middleware = store => next => action => { /*.....*/ return next(action); }
const thunk = ({ dispatch, getState }) => (next) => (action) => {
  // 中间件原理：
  // 如果符合要求，重新dispatch，调用dispatch即可
  // 如果不符合要求，直接调用下一个中间件，next

  // action 是 function 时候 （即异步）,执行一下 参数是 dispatch 和 getState 如以下形式
  // functon add() {
  //   return (dispatch, getState) => {
  //     // do sth
  //   }
  // }
  if (typeof action === 'function') {
    return action(dispatch, getState);
  }

  // 默认什么都不干 执行下一个中间件
  // action默认是对象（即同步）
  // 如 dispatch({ type: 'add' });
  return next(action);
};

export default thunk;
